home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 026-050 / scopedisk33 / dutils / remcr.c < prev    next >
C/C++ Source or Header  |  1995-03-18  |  2KB  |  87 lines

  1. /*
  2.  *  REMCR.C
  3.  *
  4.  *  REMCR [-l]    file1 file2 ... filen
  5.  *
  6.  *  -l    : convert file name to lower case
  7.  *
  8.  */
  9.  
  10. #include <stdio.h>
  11.  
  12. extern char *malloc();
  13.  
  14. main(ac,av)
  15. char *av[];
  16. {
  17.     register short i;
  18.     FILE *fi;
  19.     long len;
  20.     char *buf;
  21.     char clower = 0;
  22.  
  23.     for (i = 1; i < ac; ++i) {
  24.     if (strcmp(av[i], "-l") == 0) {
  25.         clower = 1;
  26.         continue;
  27.     }
  28.     printf("%-20s ", av[i]);
  29.     fflush(stdout);
  30.     if ((fi = fopen(av[i], "r")) == NULL) {
  31.         perror(av[i]);
  32.         continue;
  33.     }
  34.     fseek(fi, 0, 2);
  35.     len = ftell(fi);
  36.     printf("%6ld ", len);
  37.     fflush(stdout);
  38.     if (len < 0 || (buf = malloc(len*2)) == NULL) {
  39.         puts("len < 0 or malloc failed");
  40.         fclose(fi);
  41.         continue;
  42.     }
  43.     fseek(fi, 0, 0);
  44.     if (fread(buf, len, 1, fi) != 1) {
  45.         puts("read failed");
  46.         goto done;
  47.     }
  48.     fclose(fi);
  49.     len = remcr(buf, len);
  50.     if (clower) {
  51.         register char *ptr;
  52.         for (ptr = av[i]; *ptr; ++ptr) {
  53.         if (*ptr >= 'A' && *ptr <= 'Z')
  54.             *ptr |= 0x20;
  55.         }
  56.     }
  57.     if ((fi = fopen(av[i], "w")) == NULL) {
  58.         puts("Unable to open for write");
  59.         goto done;
  60.     }
  61.     printf("write ");
  62.     fflush(stdout);
  63.     if (fwrite(buf, len, 1, fi) != 1) {
  64.         puts("write failed");
  65.         goto done;
  66.     }
  67.     puts("ok");
  68. done:
  69.     fclose(fi);
  70.     free(buf);
  71.     }
  72. }
  73.  
  74. remcr(buf, len)
  75. register char *buf;
  76. register long len;
  77. {
  78.     register char *ptr = buf + len;
  79.     register long i, j;
  80.     for (i = j = 0; i < len; ++i) {
  81.     if (buf[i] == 13)
  82.         continue;
  83.     ptr[j++] = buf[i];
  84.     }
  85.     bmov(buf + len, buf, j);
  86.     return(j);
  87. }